﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data.SqlClient;
using DAL;
using BOL;
using UtilityExtensions;
using System.Configuration;
using System.IO;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Website.Logger;

using BOL.UI;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;

namespace UILGestion.VentaAdmin
{
    public partial class ProyectoPanel : System.Web.UI.UserControl
    {
        public int GetIDUI()
        {
            return idUI.Value.ToInt();
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if(!this.IsPostBack)
            {
                botonesPNL.Visible = false;
            }
            
          

        }
        public void HideButon()
        {
            proformarBTN.Visible = false;
            ventaBTN.Visible = false;
        }
        public void LoadMapaProyecto()
        {
            var id = (string)Request.QueryString["idProyecto"];
            var Proyecto = DbUtil.Db.Proyectos.Single(p => p.idInternal == id.ToInt());
            proyectoLBTN.Text = Proyecto.descripcion;
            map.HotSpots.Clear();
            map.ImageUrl = "~/Admin/ImagenSetForm.aspx?id={0}&type=Proyecto".Fmt(Proyecto.idArchivo);
            map.Attributes.Add("CssClass", "mapHiLight");
            map.Width =Unit.Parse(Proyecto.ancho.ToString());
            map.Height = Unit.Parse(Proyecto.alto.ToString()); 

            foreach (var item in Proyecto.Etapas)
	        {
                PolygonHotSpot  etapas= new PolygonHotSpot();
                //etapas.AlternateText=item.descripcion;
                etapas.HotSpotMode=HotSpotMode.PostBack;
                etapas.PostBackValue = string.Format("E:{0}", item.idInternal.ToString());
                etapas.Coordinates   = (item.mapCordenada==null)?"":item.mapCordenada;
                etapas.AlternateText = "{0}".Fmt(item.idInternal.ToString());
                
                
                map.HotSpots.Add(etapas);

	        }
            
            datosPNL.Visible = false;
            modeloPNL.Visible = false;
            botonesPNL.Visible = false;

        }
        private void LoadMapaEtapa(int idEtapa)
        {
            var etapa = DbUtil.Db.Etapas.SingleOrDefault(p => p.idInternal == idEtapa);
            etapaLBTN.Text = etapa.descripcion;
            idEtapaSeleccion.Value = etapa.idInternal.ToString();
            
            map.HotSpots.Clear();
            map.ImageUrl = "~/Admin/ImagenSetForm.aspx?id={0}&type=Etapa".Fmt(etapa.idArchivo);
            map.Width = Unit.Parse(etapa.ancho.ToString());
            map.Height = Unit.Parse(etapa.alto.ToString());
            map.Attributes.Add("CssClass" , "mapHiLight");
            datosPNL.Visible = true;
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;

            foreach (var item in etapa.UIs.Where(p=>p.mapCordenada.HasValue()))
            {
                PolygonHotSpot uis = new PolygonHotSpot();
                uis.AlternateText = item.descripcion;
                uis.HotSpotMode = HotSpotMode.PostBack;
                uis.PostBackValue =string.Format("UI:{0}", item.idInternal.ToString());
                uis.Coordinates = item.mapCordenada==null?"":item.mapCordenada;
                uis.AlternateText = String.Format("{0},{1}".Fmt(item.EstadoItem.descripcion,item.idInternal));
                map.HotSpots.Add(uis);

            }
            foreach (var item in etapa.UILocalizacions)
            {
                PolygonHotSpot uis = new PolygonHotSpot();
                //uis.AlternateText = item.descripcion;
                uis.AlternateText = "{0}".Fmt(item.idInternal.ToString());
                uis.HotSpotMode = HotSpotMode.PostBack;
                uis.PostBackValue = string.Format("L:{0}", item.idInternal.ToString());
                uis.Coordinates = item.mapCordenada == null ? "" : item.mapCordenada;
                
                map.HotSpots.Add(uis);

            }


             
        }

        private void LoadDepartamentos(int idTorre)
        {
            var torre = DbUtil.Db.UILocalizacions.SingleOrDefault(p => p.idInternal == idTorre);
            //departamento.Rows.Clear();
            //departamento.Caption=torre.descripcion;

            map.HotSpots.Clear();
            map.ImageUrl = "~/Admin/ImagenSetForm.aspx?id={0}&type=Localizacion".Fmt(torre.idArchivo);
            map.Width = Unit.Parse(torre.ancho.ToString());
            map.Height = Unit.Parse(torre.alto.ToString()); 
           

            foreach (var item in torre.UIs)
            {
                RectangleHotSpot uis = new RectangleHotSpot();
                
               
                uis.HotSpotMode = HotSpotMode.PostBack;
                uis.PostBackValue =string.Format("UI:{0}", item.idInternal.ToString());
                //para el caso de ser recta
                 string[] cordenas=item.mapCordenada==null?"".Split(','):item.mapCordenada.Split(',');
                 if (cordenas.Length == 4)
                 {
                     uis.Top = cordenas[1].ToInt();
                     uis.Left = cordenas[0].ToInt();
                     uis.Bottom = cordenas[3].ToInt();
                     uis.Right = cordenas[2].ToInt();
                 }
                 uis.AlternateText = string.Format("{0} ({1})",item.EstadoItem.descripcion, item.idInternal);
               
                 
                 
                map.HotSpots.Add(uis);
               
               
                
            }
            
            datosPNL.Visible = true;
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;
            }

          protected void map_Click(object sender, ImageMapEventArgs e)
        {
            // si biene de proyecto
            string[] imagen=e.PostBackValue.Split(':');
            switch (imagen[0])
	            {
                    case "P":
                    LoadMapaProyecto();
                    break;
                    case "E":
                    LoadMapaEtapa(imagen[1].ToInt());
                    break;
                    case "L":
                    LoadDepartamentos(imagen[1].ToInt());
                    break;
                    case "UI":
                    loadUI(imagen[1].ToInt());
                    break;

		            default:
                     break;
	            }
            
        }
        private void loadUI(int idUI)
        {
            var ui=DbUtil.Db.UIs.SingleOrDefault(p=>p.idInternal==idUI);
            this.idUI.Value = idUI.ToString();
            tipoUILBL.Text = ui.UITipo.descripcion;
            codigoLBL.Text = ui.codigo;
            localizacionLBL.Text = ui.UILocalizacion.descripcion;
            bloqueLBL.Text = ui.UIBloque.descripcion;
            estadoLBL.Text = ui.EstadoItem.descripcion;
            modeloLBL.Text = ui.UIModeloTipo.descripcion;
            areaLBL.Text = string.Format("Area:{0} /Techada:{1} /Ocupada{2}",ui.areaTerreno,ui.areaTechada,ui.areaOcupada);
            precioLBL.Text = string.Format("{0}{1:N}", ui.Moneda.simbol, ui.precio);
            datosPNL.Visible = true;
            // carga IMG

            modeloIMG.ImageUrl = "~/Admin/ImagenSetForm.aspx?id={0}&type=Modelo".Fmt(ui.UIModeloTipo.idArchivo);
            modeloPNL.Visible = true;
            botonesPNL.Visible = true;
        }

        protected void LBTN_Click(object sender, EventArgs e)
        {
            try 
	            {
                    if (((LinkButton)sender).ID == proyectoLBTN.ID)
                    {
                        LoadMapaProyecto();
                    }
                    if (((LinkButton)sender).ID == etapaLBTN.ID)
                    {
                        LoadMapaEtapa(idEtapaSeleccion.Value.ToInt());
                    }

                }
            catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }
        }

        protected void BTN_Click(object sender, EventArgs e)
        {
            if (idUI.Value.ToInt() != 0)
            {
                var idProyecto = (string)Request.QueryString["idProyecto"];
                if (((Button)sender).ID == proformarBTN.ID)
                {
                Response.Redirect("~/VentaAdmin/Proforma/ProformaEditForm.aspx?type=A&idUI={0}&idProyecto={1}".Fmt(idUI.Value, idProyecto), true);
                }
                if (((Button)sender).ID == ventaBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/OrdenVenta/OrdenVentaEditForm.aspx?type=A&idUI={0}&idProyecto={1}".Fmt(idUI.Value, idProyecto), true);
                }
            }

        }

      
    }
}